// Check that count returns 0 in some exception cases.

t = db.jstests_counta;
t.drop();

for (i = 0; i < 10; ++i) {
    t.save({a: i});
}

// f() is undefined, causing an assertion
assert.throws(function() {
    t.count({
        $where: function() {
            if (this.a < 5) {
                return true;
            } else {
                f();
            }
        }
    });
});

// count must return error if collection name is absent
res = db.runCommand("count");
assert.eq(res.ok, 0);   // must not be OK
assert(res.code == 2);  // should fail with errorcode("BadValue"), not an massert
